package com.xk.school_device.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 *
 * </p>
 *
 * @author xk
 * @since 2025-04-16
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "Devices对象", description = "")
public class Devices implements Serializable {

    private static final long serialVersionUID = 1L;

    // 设备 ID，用于唯一标识设备
    private String deviceId;

    // 设备名称，描述设备的具体名称
    private String deviceName;

    // 设备型号，表明设备的具体型号信息
    private String model;

    /**
     * 设备分类，对设备进行分类的标识
     */
    @ApiModelProperty("设备分类")
    private String category;

    // 设备品牌，即设备的生产品牌
    private String brand;

    /**
     * 序列号，设备的唯一序列号
     */
    @ApiModelProperty("序列号")
    private String serialNumber;

    // 购买日期，记录设备的购买时间
    private LocalDate purchaseDate;

    // 购买金额，设备购买时的花费金额
    private BigDecimal purchaseAmount;

    // 供应商，提供该设备的供应商名称
    private String supplier;

    /**
     * 保修期（月），设备的保修时长，以月为单位
     */
    @ApiModelProperty("保修期（月）")
    private Integer warrantyPeriod;

    // 设备状态，如正常、故障等状态描述
    private String status;

    /**
     * 所属部门，设备归属的部门 ID
     */
    @ApiModelProperty("所属部门")
    private String departmentId;

    // 设备存放位置，记录设备所在的具体位置
    private String location;

    // 设备图片链接，指向设备图片的 URL 地址
    private String imageUrl;

    // 备注信息，可用于记录关于设备的额外说明
    private String remarks;

    // 创建时间，记录该设备信息创建的具体时间
    private LocalDateTime createdAt;

    // 更新时间，记录该设备信息最后一次更新的具体时间
    private LocalDateTime updatedAt;

    @TableField(exist = false)
    private String departmentName;

    /**
     * 使用人，记录设备当前使用的人
     */
    @TableField(exist = false)
    private String userName;

    /**
     * 使用部门还是个人
     */
    @TableField(exist = false)
    private String useType;

    /**
     * 使用部门名称
     */
    @TableField(exist = false)
    private String useDepartmentName;

}
